package com.itheima.sys.dto;

import java.time.LocalDate;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.itheima.common.entity.MyAuthority;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.util.CollectionUtils;

/**
 * <p>
 * 企业与用户关联表 企业-企业与用户关联表
 * </p>
 *
 * @author itheima
 * @since 2020-12-07
 */
@Data
@EqualsAndHashCode(callSuper = false)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CompanyUserDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    //员工ID
    private Long id;

    /**
     * 用户id 用户id
     */
    private Long userId;

    /**
     * 企业id 企业id
     */
    private Long companyId;

    /**
     * 公司名称
     */
    private String companyName;

    /**
     * 权限类型 1主管理员、2子管理员、3普通用户
     */
    private Integer auth;

    /**
     * 部门id 部门id
     */
    private Long departmentId;

    //部门名称
    private String departmentName;

    /**
     * 岗位 岗位
     */
    private String post;

    /**
     * 工号 工号
     */
    private String workNumber;

    /**
     * 邮箱 邮箱
     */
    private String email;

    /**
     * 固定电话 固定电话
     */
    private String tel;

    /**
     * 办公地点 办公地点
     */
    private String officeAddress;

    /**
     * 入职时间 入职时间
     */
    private LocalDate timeEntry;

    /**
     * 备注
     */
    private String remark;

    /**
     * 手机号
     */
    private String mobile;

    private String username;

    /**
     * 行业编码
     */
    private String industryCode;

    /**
     * 注册上传图片地址
     */
    private String imageUrl;

    //当前员工包含的权限（角色，权限）
    private List<MyAuthority> grantedAuthorities;

    private List<SysRoleDTO> roles;  //用户角色

    private List<SysFunctionDTO> functions; //用户权限


    /**
     * 封装当前用户所有的角色 以及 权限
     * @return
     */
    public List<MyAuthority> getGrantedAuthorities() {
        grantedAuthorities = new ArrayList<>();
        if(!CollectionUtils.isEmpty(roles)){
            grantedAuthorities.addAll(roles);
        }
        if(!CollectionUtils.isEmpty(functions)){
            grantedAuthorities.addAll(functions);
        }
        return grantedAuthorities;
    }
}
